package com.ruoyi.iot.domain;

import java.io.Serializable;
import java.util.Date;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
* 下发指令记录
*/
@Data
public class Command  implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
    * 指令id，设备回复时需要携带
    */
    private Long id;

    @NotNull
    private String deviceKey;

    /**
    * 哪个用户下发的，系统下发则为0
    */
    private Long userId;

    /**
     * 来源：
     * user:用户主动执行
     * timer:定时任务系统触发执行
     */
    private String source;

    @NotNull
    private String productKey;

    @NotNull
    private String channelKey;

    /**
    * 200: 已发送
    * 202：执行成功，设备执行后上报反馈
    * 500：执行失败
    * 其他状态码自定义
    */
    private int code;
    /**
    * 执行结果文字描述，也可为错误信息
    */
    private String message;

    /**
    *下发参数JSON对象，从数据项属性中获取例如：{"switch":"on"}
    */
    @NotBlank
    private String params;

    /**
     * 发送时间
     */
    private Date postTime;


    /**
     * 设备回复时间，可以不回复
     */
    private Date replyTime;



}